﻿using System;
using Actya.Core.SiteStructure;

namespace Actya.Core.Content
{
	/// <summary>
	/// Interface for all content classes.
	/// </summary>
	public interface IContent
	{
		/// <summary>
		/// Gets a textual representation of the content. 
		/// </summary>
		string ContentAsText { get; }

		/// <summary>
		/// Initialize content for the given theme.
		/// </summary>
		/// <param name="theme"></param>
		/// <returns></returns>
		IContent InitializeForTheme(Theme theme);

		/// <summary>
		/// Sanitize content with the given sanitzer.
		/// </summary>
		/// <param name="sanitize"></param>
		/// <returns>The sanitized context.</returns>
		IContent SanitizeContent(Func<string, string> sanitize);

	}
}
